package com.amap.search.entity.es;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Document(indexName = "weather_record", shards = 3, replicas = 2)
public class WeatherRecordEs {

    /**
     * id唯一标识
      */
    @Id
    private Long id;

    /**
     * @Field注解部分属性讲解
     * type : 字段数据类型
     *      Keyword : 短语,不进行分词
     *      text : 模糊查询支持
     *      Double : 双精度
     *      Date : 时间
     *      更多的点进FieldType枚举类查看
     * analyzer : 分词器类型
     *      ik_smart ： 颗粒度比较粗，一个词只会分一次 eg.广东省广州市 -> 【广东省、广州市】
     *      ik_max_word ： 颗粒度很细，一个词可能会分多次  eg.广东省广州市 -> 【广东省、广东、广、广州、广州市】
     * index : 是否索引(默认:true)
     */
    @Field(type = FieldType.Text, analyzer = "ik_max_word")
    private String city;

    @Field(type = FieldType.Keyword)
    private String adCode;

    @Field(type = FieldType.Keyword)
    private String weather;

    @Field(type = FieldType.Double, index = false)
    private Double temperature;

    @Field(type = FieldType.Keyword, index = false)
    private String windDirection;

    @Field(type = FieldType.Keyword, index = false)
    private String windPower;

    @Field(type = FieldType.Keyword, index = false)
    private String humidity;

    @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date reportTime;

    @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}

